#ifndef WALK_H_
#define WALK_H_

typedef struct  TWalkState
    {
    int         iRule;
    int         iRhs;
    TSymbol*    Symbol;
    int         Result;
    }           TWalkState;

typedef struct  TWalk
    {
    TWalkState* Stack;
    int         iStack;
    void*       UserData;
    int         Result;
    TSymbol*    Root;
    }           TWalk;

typedef int (*WALKER)(TWalk* Walk, TSymbol* This);

int     Walk(WALKER Walker, void* Data, TSymbol* Root);

#endif
